Элементы управления

 

1. Рамка (Frame)

Рамка объединяет в себе разнотипные элементы управления. В этом рамка похожа на коллекцию. Но у рамок несколько иное на­значение, чем у коллекций.

Поместите на форму элемент управления Frame, придав ему до­вольно большие размеры. Затем возьмите из Toolbox и поместите внутрь этой рамки несколько других элементов управления, в том числе еще один Frame. А теперь передвиньте рамку по форме. Вы ви­дите, что объекты внутри рамки передвинулись вместе с ней. Посмот­рите на значения свойств Тор и Left любого объекта внутри рамки. Те­перь это координаты не относительно формы, а относительно рамки.

Если вы захотите мышкой переместить в рамку уже размещенный на форме объект, у вас ничего не получится. Оказавшись внутри гра­ниц рамки, он не стал "своим". Убедитесь в этом, сдвинув рамку в сторону. Все уехали, объект остался на месте. Чтобы добиться желаемого, вырежьте (Cut) объект со старого места и наклейте (Paste) в рамку. Аналогичная ситуация, когда вы попытаетесь обнять новой или старой рамкой уже существующие объекты

Рамка является удобным средством объединения элементов управления по смыслу .

 

 

 

 

В программе вы можете изменять значения свойств рамки Top, Left. Объекты, объединенные в рамке, будут при этом перемещаться вместе с ней. Вы можете изменять значения свойств рамки Visible, Enabled. При этом точно так же будут меняться значения этих свойств всех объек­тов, объединенных в рамке. Это полезно тогда, когда у вас на форме слишком много объектов и все они свободно не умещаются на ней. Вас может выручить то, что не все они нужны одновременно. Разде­лите их между наложенными друг на друга рамками и в каждый мо­мент времени делайте видимой только одну из них.

Поэкспериментируйте с цветами, границей, шрифтом рамки. Способностями, аналогичными способностям рамки, обладает и объект PictureBox. Проверьте - в нем точно так же можно размещать элементы управления. Мы знаем и еще один такой объект. Это, ко­нечно же, сама форма. Все подобные объекты называются контейне­рами.

 

Вот некоторые элементы управления, с которыми мы уже познако­мились:

      кнопка, метка, текстовое поле;

      Animation ;

      Image, Picture ;

      Line, Shape ;

      таймер;

      рамка (Frame) ;

     Многих из описываемых элементов управления нет на Toolbox. Что­бы их добыть, поставьте флажки в Project->Components-> Microsoft Windows Common Controls 6.0 и Microsoft Windows Common Controls 6.0-2.

 

   Флажок (CheckBox)

Поместите на форму несколько флажков (CheckBox). Запустите проект. Пощелкайте внутри квадратиков. Флажок мы устанавливаем (ставим галочку мышкой или с клавиатуры) тогда, когда хотим ска­зать "да", а снимаем установку (снимаем галочку мышкой или с кла­виатуры), когда хотим сказать "нет".

Приме: Нажатием на кнопку нужно нарисовать окружность. Но перед нажатием кнопки мы должны иметь возможность одним флаж­ком установить или не установить тройную толщину линии этой ок­ружности, а другим флажком установить или не установить синий цвет этой линии Если флажки мы не установим, то толщина и цвет будут выполнены по умолчанию (одинарная и черный).

Ваши действия. Создайте проект с кнопкой и двумя флажками

 

Имена флажков - Check1 и Check2.

 Программа:

Private Sub Command1_Click()

Cls

If Check1.Value = vbChecked Then

 DrawWidth = 3

 Else

DrawWidth = 1 'Если флажок 1 установлен, mo толщина тройная, иначе - одинарная

End If

If Check2.Value = vbChecked Then

 ForeColor = vbBlue

Else

ForeColor = vbBlack 'Если флажок 2 установлен, то цвет синий, иначе - черный

End If

Circle (500, 500), 300

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пояснение. У многих элементов управления есть свойство Value (значение), характеризующее главное назначение элемента. Свойство Value флажка имеет 3 значения: vbChecked (установлен, галочка), vbUnchecked (не установлен, пустой белый квадрат) и vbGrayed (галочка на сером фоне - используется нечасто, например в программе уста­новки Microsoft Office). Все 3 значения можно устанавливать в режи­ме проектирования и программным способом. В режиме работы мож­но вручную, мышкой или с клавиатуры устанавливать только первые 2 значения, причем переключать между этими двумя значениями можно сколько угодно раз. В этом и состоит удобство флажков: перед тем как совершить решающее нажатие на кнопку, можно как угодно уста­навливать флажки или, передумав, снимать установку.

 Переключатель (OptionButton)

Поместите на форму 3 элемента управления OptionButton. Запустите проект. Пощелкайте внутри кружочков. Вы видите, что изо всех пере­ключателей в любой момент времени только один может быть вы­бран, остальные автоматически отключаются. Это полезное свойство удобно применять там, где нужно выбрать только одну из нескольких возможностей.

А что делать, если вам на той же форме нужно организовать еще одну группу переключателей? Для этого нужно каждую группу поместить в свой контейнер, напри­мер в рамку (Frame).

В противном случае изо всех семи переключателей в любой мо­мент времени будет выбран только один.

Так же, как и у флажка, главным свойством переключателя являет­ся Value. Только тип этого свойства логический - когда переключатель выбран, оно равно True.

 Компьютер может узнать, выбран ли переклю­чатель Option1, при помощи следующего оператора:

If  Option1.Value = True Then...

 Учитывая, что тип свойства логический, можно сократить эту запись:

If Option1.Value Then ...

А можно и еще сократить. Visual Basic позволяет обращаться к главному свойству элемента управления (в нашем случае это Value) со­кращенно - вместо Option1.Value - просто Option1.   Получается:

If Option1 Then...

Вот фрагмент, позволяющий узнать, какой из переключателей группы выбран (имена переключателей: Option1, Option2,...):

If Option1 Then

Print "Выбран синий"

Elseif

Option2 Then

Print "Выбран зеленый"

End If

Если вам нужно, чтобы некоторое действие было выполнено не по­том, а сразу же после щелчка по переключателю, вы можете для каж­дого переключателя написать процедуру обработки события Click, но гораздо удобнее объединить все переключатели группы в массив, то­гда процедуру придется писать только одну:

Private Sub Option1_Click(lndex As Integer)

    Select Case Index

Case 0

       Print "Выбран зеленый"

Case 1

       Print "Выбран синий"

    End Select

End Sub

 Полосы прокрутки (HScrollBar и VScrollBar)

Для определенности поговорим о горизонтальной полосе прокрут­ки (HscrollBar). Все сказанное будет полностью относиться и к вертикальной полосе (VScrollBar).

Поместите на форму горизонтальную полосу. Запустите проект. Потаскайте мышкой бегунок. Вы, безусловно, знакомы с полосой про­крутки по другим приложениям Windows. Она используется в основ­ном для того, чтобы прокручивать информацию в окне или же просто менять значение какой-нибудь величины.

Пример. Изменять с помощью полосы прокрутки значение пере­менной величины W в пределах от 20 до 50. При щелчке по стрелкам полосы или клавиатуры значение переменной должно меняться на 2, а при щелчке по полосе слева или справа от бегунка значение перемен­ной должно меняться на 5. При запуске проекта бегунок должен сто­ять на отметке 27.

Ваши действия. Создайте проект и поместите на форму горизон-
тальную полосу прокрутки. Ее имя
HScroll1. Установите в соответствии
с числами из задания следующие свойства полосы:
  Min           - 20;

  Мах          - 50;

 SmallChange-2;
 
LargeChange-5;
 
Value         - 27.

Проверьте правильность работы полосы, запустив программу :

Private Sub HScroll1_Change()

W = HScroll1.Value

 Print W

End Sub

Событие HScroll1_Change возникает при любом перемещении бегунка.  

 

Slider, ProgressBar

Slider. Его действие и свойства (Min, Мах, SmallChange, LargeChange, Value) аналогичны действию и свойствам поло­сы прокрутки HScrollBar.

Вверху  2 варианта ProgressBar. Вы наверняка наблюдали один из них при инсталляции программ. Зачем нужна ProgressBar? Пусть ваша программа запускает длительный процесс, во время которого на экране ничего не происходит (например, считывает информацию из 400 файлов). У пользователя может возникнуть тре­вожное ощущение, что программа "зависла". Чтобы этого ощущения не было, вы можете выдать на экран текст Я занята. Подождите минутку, который пропадет, когда дело будет сделано. Но, пока дело делается, этот текст так долго и неподвижно красуется посреди экрана, что в душу опять закрадываются подозрения. Гораздо лучше создать ProgressBar, полоса которой после считывания информации из каждого файла будет продвигаться на 1/400 часть длины ProgressBar. Поскольку компьютер работает быстро, у пользователя создастся впечатление, что полоса плавно ползет направо. А раз движение есть, значит, ком­пьютер не "завис"! К тому же можно в процессе работы примерно представлять, какая часть ее выполнена.

Свойства ProgressBar - Min, Max - аналогичны свойствам полосы про­крутки. Внешний вид определяется свойством Scrolling.

Для иллюстрации сказанного создайте проект. Разместите элемен­ты управления, как на рисунке. Установите свойство Мах слайдера в 50, у остальных - в 100. Запустите следующие процедуры:

Private Sub Command1_Click()

 For а = 0 То 40 Step 0.01

     ProgressBar1 = а Next

End Sub

Private Sub Command2_Click()

  For a = 0 To 80 Step 0.1

     ProgressBar2 = a

Next

End Sub

Private Sub Command3_Click()

For а = 0 То 30 Step 0.001

Sliderl = а

Next

 End Sub

Во время выполнения процедур полосы и бегунок слайдера дви­жутся. Если движение слишком быстрое или слишком медленное, из­мените шаг цикла.

 Список (ListBox) и поле со списком (ComboBox)

Список (ListBox)

Поместите на форму список. Его имя - Listl. Заполните список. Для этого зайдите в его свойство List и введите слово Зеленый - первый эле­мент списка, после чего нажмите Ctrl-Enter. Теперь введите слово Красный - второй элемент списка , нажмите Ctrl-Enter. И так далее. Запустите проект. Пощелкайте по элементам списка.

 

 

Если все элементы списка не умещаются в его видимом простран­стве, то у списка автоматически возникает полоса прокрутки.

Свойство Text списка Listl - это значение выбранного элемента спи­ска Listl.

ComboBox (вариант "Раскрывающийся список") ComboBox - это обогащенный новыми возможностями ListBox. Он существует в трех вариантах. Рассмотрим их по мере усложнения.

Поместите на форму ComboBox. Его имя - Combol. Вариант ComboBox определяется значением его свойства Style. Выберите вариант Dropdown List - Раскрывающийся список. Заполните ComboBox так же, как вы заполняли список ListBox. За­пустите проект.

Щелкните по черной треугольной стрелке в правой части списка. Список раскроется, и вы сможете выбрать из него любой элемент так же, как вы выбирали элементы из списка ListBox. Программа для Com­boBox также будет совершенно аналогична программе для ListBox.

ComboBox (вариант "Простой Combo")

Поместите на форму ComboBox (а проще - скопируйте старый). В его свойстве Style выберите вариант Simple Combo - Простой Combo. За­полните ComboBox так же, как вы заполняли список ListBox. Запустите проект.

Отличие ComboBox от ListBox в том, что сверху от списка имеется текстовое поле.

Зачем же нужно текстовое поле? А затем, что если вам вдруг понадобится распечатать команду, которой нет в списке, вы все­гда можете ввести ее в текстовое поле и нажать кнопку печати.

Раскрывающийся список тоже имеет наверху текстовое поле, только вводить туда ничего нельзя.

ComboBox (вариант "Раскрывающийся Combo")

Раскрывающийся Combo объединяет в себе преимущества двух других вариантов ComboBox: он выглядит так же компактно, как Раскрывающийся список, и позволяет редактировать текстовое поле, как Простой Combo.

Свойства, события и методы элементов управления ListBox и ComboBox

Все примеры, приведенные здесь относительно ListBox, относятся также и к любому варианту ComboBox. Элементы списков нумеруются с нуля!

 

Оператор

Смысл

List1.Additem "зеленый"

В конец списка List1 метод Additem добавляет элемент зеленый

List1.Additem "фиолетовый", 3

Метод Additem добавляет элемент фиолетовый на место № 3 в список List1

List1.Removeitem 4

Метод Removeitem удаляет элемент № 4 из списка List1

List1.Clear

Опустошить список List1

Print List1.Text

Напечатать значение выбранного элемента в списке List1

Print Combo1.Text

Напечатать значение текстового поля из ComboBox

Print List1.List(5)

Напечатать значение элемента № 5 в списке List1

List1.List(0)= "Красный"

Присвоить элементу № 0 в списке List1 значение Красный

Print List1.listindex

Напечатать номер выбранного элемента в списке List1. Если элемент не выбран, то печатается -1

Print List1.ListCount

Напечатать количество элементов в списке List1

Если вы хотите, чтобы элементы списка были отсортированы по алфавиту, то в режиме проектирования установите в True свойство Sorted. В режиме работы его менять нельзя. Сортировка нарушится, если вы будете использовать метод Additem с индексом. Не забывайте, что сортировка текстовая, а не числовая, поэтому 28 будет стоять вы­ше пяти.

У ListBox есть некоторые преимущества перед ComboBox: он может состоять из нескольких столбцов и допускает множественный выбор. Но на этом мы останавливаться не будем.

Щелчок или двойной щелчок по элементу списка вызывают, как водится, события Click и DblClick


Элементы MonthView и DTPicker

Оба они похожи друг на друга, поэтому остановлюсь только на DTPicker. Его вид после запуска проекта с такой процедурой в окне кода:

Private Sub DTPicker1_Change()

If  DTPickerl = #4/24/2001# Then

MsgBox "День рождения"

 End Sub

и щелчка мышкой по 24 апреля 2001 г.

 DTPicker1 воспринимает лю­бые даты с 1601-го по 9999 г.

Этими элементами удобно пользоваться для ручного заполнения датами списков и баз данных.

UpDown

Разместите на форме элемент управления UpDown. Он имеет вид двух кнопок со стрелками. Рядом с ним разместите текстовое поле или другой элемент управления, способный показывать числа. Мы размес­тили текстовое поле Text1 (рис. 15.10).

 

 


 

 

Задать вопрос.

 

 ТЕСТ   Практическое задание

Hosted by uCoz